package tech.aistar.corejava.day10.exception;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
 * @author success
 * @version 1.0
 * @description:本类用来演示:
 * @date 2019/7/26 0026
 */
public class ExceptionDemo01 {
    public static void main(String[] args) {
        test01();
    }

    public static void test01(){
        //模拟一个非运行时异常.
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            //每个异常只会进入到对应的catch块中
            sdf.parse("2010/09/09");

            InputStream in = new FileInputStream("d:/success.txt");

            System.out.println("如果上面出现了异常,此处执行不到!");

        } catch (ParseException e) {
            //e.printStackTrace();//打印异常的堆栈信息..
            System.out.println("解析失败异常!");
        } catch (FileNotFoundException e) {
//            e.printStackTrace();
            System.out.println("文件路径不存在!");
        }
        System.out.println("执行结束...");
    }

    /**
     * 注意点:当存在多个catch块的时候,如果异常类型存在父子关系的话,那么父类

     异常一定要放在子类异常的下方.
     */
    public static void test02(){
        //模拟一个非运行时异常.
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            //每个异常只会进入到对应的catch块中
            sdf.parse("2010/09/09");

            InputStream in = new FileInputStream("d:/success.txt");

            System.out.println("如果上面出现了异常,此处执行不到!");

        } catch (ParseException e) {
            //e.printStackTrace();//打印异常的堆栈信息..
            System.out.println("解析失败异常!");
        } catch (FileNotFoundException e) {
//            e.printStackTrace();
            System.out.println("文件路径不存在!");
        }catch (Exception e){
            System.out.println("===");
        }
        System.out.println("执行结束...");
    }

    public static void test03(){
        //模拟一个非运行时异常.
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            //每个异常只会进入到对应的catch块中
            sdf.parse("2010/09/09");

            InputStream in = new FileInputStream("d:/success.txt");

            System.out.println("如果上面出现了异常,此处执行不到!");

        } catch (Exception e) {
            //e.printStackTrace();//打印异常的堆栈信息..
            System.out.println("使用异常总的父类来统一接收!!!");
        }
        System.out.println("执行结束...");
    }

    public static void test04(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

            //每个异常只会进入到对应的catch块中
        try {
            sdf.parse("2010/09/09");
            InputStream in = new FileInputStream("d:/success.txt");
        } catch (ParseException | FileNotFoundException e) {
            //没有办法对各个异常进行详细的记录
            if(e instanceof ParseException){

            }else if(e instanceof FileNotFoundException){

            }
            e.printStackTrace();
        }
    }
}
